教學來源:
RecyclerView
RecyclerView OnClickListener (Best practice way)
整理
1
把RecyclerView的每一格的點擊事件放到OnbindViewHolder不是很好的方法,如果有很多項目,效率不好。(不知道為什麼)。放到ViewHolder才是最好的方法。
2
問題:How to access RecyclerView in androidx?
參考:解答1
3
問題:How to increase the font size in Android Studio?
參考:解答2
4
RecyclerView添加分割线的简便方法
Android Drawing Separator/Divider Line in Layout?
5
問題:I did not Import the Recycler View AndroidX Library, yet, i am using it. Why and How is it working?
參考: 這個-- >implementation 'com.google.android.material:material:1.0.0'
包括androidx.recyclerview:recyclerview:1.0.0
參考:解答1和2。Kotlin跟JVM的版本對不上。
這個問題的留言區:
Recyclerview java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
還有這還有這個問題:
Recycler View: Inconsistency detected. Invalid view holder adapter positionViewHolder
DiffUtil is a must!
RecyclerView Performance with DiffUtil (Kotlin)
AsyncListDiffer
DiffUtil is a must!
Using DiffUtil in Android RecyclerView
有參考程式:
Simultaneous Insertion and Removal in RecyclerView with Animation
使用adapter的自己寫的update方法,就可以了:
adapter.updateListItems(List.toList())
用DiffUtil不能修改的,就使用之前的:
adapter.notifyItemChanged(position)
getChangePayload方法,不用修改,就可以了(可以連這個方法都不寫),用的話,好像是傳到onBindViewHolder,再更改畫面,所以要更改項目裡的內容的話,就要寫getChangePayload?
不過改完還是不能更新,好像是因為arraylist的關係,改成list就可以了。
DiffUtil is not updating the RecyclerView
Kotlin : 集合資料型態,List、Map、Set 集合
Kotlin 中的 List、Map、Set 只能讀取,無法進行修改,若需要可讀可寫,要使用 MutableList、MutableMap、MutableSet。
Close/hide the Android Soft Keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
Inconsistency detected. Invalid view holder adapter positionViewHolder